var HashMap = function() {
	this.initialize();
};

HashMap.prototype = {
	    oStruct     : null,
	    sSize       : 0,    
	    
	    /**
	     * 객체 생성시
	     */
	    initialize : function() { 
	        this.oStruct = {}
	        return;
	    },
	    
	    /**
	     * 내용 전체 삭제
	     */
	    clear : function() {
	        this.oStruct = {}
	        this.sSize = 0;
	        return;
	    },
	    
	    /**
	     * key가 있는지 판단
	     */
	    containsKey : function(sKey) {
	        for(var x in this.oStruct) {
	            if(x == sKey && this.oStruct[sKey] != undefined)
	                return true;
	        }
	        
	        return false;
	    },
	    
	    /**
	     * value가 있는지 판단
	     */
	    containsValue : function(sValue) {
	        for(var x in this.oStruct) {
	            if( this.oStruct[x] != undefined && (this.oStruct[x].toString()).equals(sValue.valueOf()) )
	                return true;
	        }
	        
	        return false;
	    },
	    
	    /**
	     * key의 collection을 가져옴
	     */
	    keySet : function() {
	        var keySet = new Array();
	        
	        for(var x in this.oStruct) {
	            if (this.oStruct[x] != undefined)
	                keySet.push(x);
	        }
	        
	        return keySet;
	    },
	    
	    /**
	     * value의 collection을 가져옴
	     */
	    valueSet : function() {
	    	var valueSet = new Array();
	        for(var x in this.oStruct) {
	            if (this.oStruct[x] != undefined)
	            	valueSet.push( this.oStruct[x] );
	        }
	        
	        return valueSet;
	    },
	    
	    /**
	     * key의 value를 가져옴
	     */
	    get : function(sKey) {
	        if(!this.containsKey(sKey))
	            return null;
	        return this.oStruct[sKey];
	    },
	    
	    /**
	     * 값이 있는지 판단
	     */
	    isEmpty : function() {
	        return (this.sSize <= 0) ? true : false;
	    },
	    
	    /**
	     * 값을 입력
	     */
	    put : function(sKey, oObj) {
	        oOldObj = null;
	        
	        if( this.containsKey(sKey) )
	            oOldObj = this.get(sKey);
	        else
	            this.sSize++;
	   
	        this.oStruct[sKey] = oObj;

	        return oOldObj;
	    },
	    
	    /**
	     * 값을 지움
	     */
	    remove : function(sKey) {
	        if(!this.containsKey(sKey))
	            return null;
	        oldObj = this.oStruct[sKey];
	        this.oStruct[sKey] = undefined;
	        this.sSize--;
	        
	        return oldObj;
	    },
	    
	    /**
	     * 전체 크기
	     */
	    size : function(){
	        return this.sSize;
	    },
	    
	    toString : function() {
	        var str = '[';
	        for(var x in this.oStruct)
	            str += x+' : '+this.oStruct[x]+','
	        str += ']'
	        return str;
	    }
	};